package com.hb.config.web;

import org.springframework.core.convert.converter.Converter;
import org.springframework.lang.NonNull;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期参数转换器
 * 用于解析前端传递的日期参数格式
 *
 * @author zhaojk
 */
public class DateConverter implements Converter<String, Date> {

    /**
     * 兼容的日期格式
     */
    private static final SimpleDateFormat[] SIMPLE_DATE_FORMATS = {
            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
            new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("yyyy-MM"),
            new SimpleDateFormat("yyyyMMdd"),
            new SimpleDateFormat("yyyy/MM/dd"),
            new SimpleDateFormat("yyyy.MM.dd"),
            new SimpleDateFormat("yyyy年MM月dd日")
    };

    @Override
    public Date convert(@NonNull String arg0) {
        for (SimpleDateFormat sdf : SIMPLE_DATE_FORMATS) {
            try {
                return sdf.parse(arg0);
            } catch (ParseException ignored) {
            }
        }
        return null;
    }
}
